import { login, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'

const state = {
  // 将token存入vuex的user仓库
  token: getToken(), // 获取最新token，并初始化
  userInfo: {}

}
const mutations = {
  // 同步修改
  // 设置token
  setToken(state, payload) {
    state.token = payload// 这里的payload是值token，修改为最新的token【从getToken刚获取】
    setToken(payload)// 并且同步到缓存
  },
  removeToken() {
    state.token = null
    removeToken()
  },
  // 设置用户信息
  setUserInfo(state, payload) {
    state.userInfo = { ...payload }
  },
  // 删除用户信息
  removeUserInfo() {
    state.userInfo = {}
  }
}
const actions = {
  // 发起登录请求【异步】时，需要对token进行本地存储
  async login(context, data) {
    const result = await login(data)
    // console.log(result)
    // 如果为true表示登录成功 取返回的token
    context.commit('setToken', result)
    // promise的then catch
    // async await
    // 认为登录成功 设置登录的时间戳
  },
  // 获取用户基本信息
  async getUserInfo(context, data) {
    const result = await getInfo()
    console.log(result)
    context.commit('setUserInfo', result)
    return result
    // !!!
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
